package com.ehotting.edsta.system.service.impl;

import java.util.List;

import com.ehotting.eaf.core.utils.DateUtils;
import com.ehotting.eaf.security.utils.BlackIpUtils;
import com.ehotting.eaf.core.domain.system.api.SysIp;
import com.ehotting.edsta.system.mapper.SysIpMapper;
import com.ehotting.edsta.system.service.ISysIpService;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * 黑名单ip管理Service业务层处理
 * 
 * @author edsta
 * @date 2023-05-09
 */
@Service
public class SysIpServiceImpl implements ISysIpService
{
    @Resource
    private SysIpMapper sysIpMapper;

    /**
     * 项目启动时，初始化黑名单IP到缓存
     */
    @PostConstruct
    public void init()
    {
        loadIpCache();
    }

    private void loadIpCache() {
        BlackIpUtils.setIpCache(sysIpMapper.selectSysIpAll());
    }

    /**
     * 查询黑名单ip管理
     * 
     * @param id 黑名单ip管理主键
     * @return 黑名单ip管理
     */
    @Override
    public SysIp selectSysIpById(Long id)
    {
        return sysIpMapper.selectSysIpById(id);
    }

    /**
     * 查询黑名单ip管理列表
     * 
     * @param sysIp 黑名单ip管理
     * @return 黑名单ip管理
     */
    @Override
    public List<SysIp> selectSysIpList(SysIp sysIp)
    {
        return sysIpMapper.selectSysIpList(sysIp);
    }

    /**
     * 新增黑名单ip管理
     * 
     * @param sysIp 黑名单ip管理
     * @return 结果
     */
    @Override
    public int insertSysIp(SysIp sysIp)
    {
        sysIp.setCreateTime(DateUtils.getNowDate());
        int i = sysIpMapper.insertSysIp(sysIp);
        loadIpCache();
        return i;
    }

    /**
     * 修改黑名单ip管理
     * 
     * @param sysIp 黑名单ip管理
     * @return 结果
     */
    @Override
    public int updateSysIp(SysIp sysIp)
    {
        int i = sysIpMapper.updateSysIp(sysIp);
        loadIpCache();
        return i;
    }

    /**
     * 批量删除黑名单ip管理
     * 
     * @param ids 需要删除的黑名单ip管理主键
     * @return 结果
     */
    @Override
    public int deleteSysIpByIds(Long[] ids)
    {
        int i = sysIpMapper.deleteSysIpByIds(ids);
        loadIpCache();
        return i;
    }

    /**
     * 删除黑名单ip管理信息
     * 
     * @param id 黑名单ip管理主键
     * @return 结果
     */
    @Override
    public int deleteSysIpById(Long id)
    {
        int i = sysIpMapper.deleteSysIpById(id);
        loadIpCache();
        return i;
    }
}
